So now I'm starting to lean to the position that one should decode ARGV
Yes, but that means you might not be able to access/create some files.
Files in ...
But you created $d and $u using "internal" Perl functions
We could debate that, but it's completely irrelevant. I used them because it made the example clear. ...
It isn't a "bug" in the C language
Of course not, because the C language doesn't define the behaviour of this (allowing it to have any behaviour).
Howeve...